#ifndef _DE_SHADER_TYPE_H_
#define _DE_SHADER_TYPE_H_
#include "PCH.h"
#include "DeShader.h"
namespace DeviousRenderer
{
class DeShaderType
{
public:
	DeShaderType(const std::wstring& sourceFileName, const std::string& functionName, EShaderType shaderType);
	virtual ~DeShaderType();

	static std::vector<DeShaderType*>* GetTypeList();

	void	CompileShader();

protected:
	std::map<std::string, std::string>	   m_Enviroment;

private:
	std::wstring							m_sFileName;
	std::string								m_sFunctionName;
	EShaderType								m_eShaderType;
};

class DeGlobalShaderType : public DeShaderType
{
public:
	DeGlobalShaderType();
	virtual ~DeGlobalShaderType();
};

class DeMaterialShaderType : public DeShaderType
{

};

}
#endif//_DE_SHADER_TYPE_H_